package com.sgb.kjwl.di.self;

import androidx.lifecycle.ViewModelProvider;

import com.sgb.kjwl.repository.SelfRepertory;
import com.sgb.kjwl.repository.impl.SelfRepertoryImpl;
import com.sgb.kjwl.view.ui.fragment.SelfFragment5;
import com.sgb.kjwl.view.ui.fragment.business.MemberDetailFragment;
import com.sgb.kjwl.view.ui.fragment.business.MemberInfoFragment;
import com.sgb.kjwl.view.ui.fragment.manage.AgentGoodsOrderStateFragment;
import com.sgb.kjwl.view.ui.fragment.manage.WebSiteInquiryFragment;
import com.sgb.kjwl.view.ui.fragment.self.ApprovalManagerFragment;
import com.sgb.kjwl.view.ui.fragment.self.CarStateFragment3;
import com.sgb.kjwl.view.ui.fragment.self.DeviceStateFragment;
import com.sgb.kjwl.view.ui.fragment.self.EnterpriseRegistrationFragment;
import com.sgb.kjwl.view.ui.fragment.self.FactoryStateFragment;
import com.sgb.kjwl.view.ui.fragment.self.FarmStateFragment;
import com.sgb.kjwl.view.ui.fragment.self.FragAlbumFragment;
import com.sgb.kjwl.view.ui.fragment.self.FragIntroduceFragment;
import com.sgb.kjwl.view.ui.fragment.self.FragPackersManageFragment;
import com.sgb.kjwl.view.ui.fragment.self.GoodsStateFragment;
import com.sgb.kjwl.view.ui.fragment.self.GoodsStateFragment3;
import com.sgb.kjwl.view.ui.fragment.self.HouseStateFragment;
import com.sgb.kjwl.view.ui.fragment.self.LandStateFragment;
import com.sgb.kjwl.view.ui.fragment.self.LeaseDemandStateFragment;
import com.sgb.kjwl.view.ui.fragment.self.LeaseOrderStateFragment;
import com.sgb.kjwl.view.ui.fragment.self.MachineStateFragment;
import com.sgb.kjwl.view.ui.fragment.self.MyOfferFragment;
import com.sgb.kjwl.view.ui.fragment.self.PackersStateFragment;
import com.sgb.kjwl.view.ui.fragment.self.PersonalRegistrationFragment;
import com.sgb.kjwl.view.ui.fragment.self.mine.CommonFocusFragment;
import com.sgb.kjwl.view.ui.fragment.self.mine.IntelligentFocusListFragment;
import com.sgb.kjwl.view.ui.fragment.self.pick.ProjectDetailedListFragment;
import com.sgb.kjwl.view.ui.fragment.self.pick.SelfPickListFragment3;
import com.sgb.kjwl.view.ui.fragment.self.pick.SelfPickListFragment4;
import com.sgb.kjwl.view.ui.fragment.self.pick.UserLaborFragment;
import com.sgb.kjwl.view.ui.fragment.self.pick.UserMachineFragment;
import com.sgb.kjwl.view.ui.fragment.self.pick.UserMaterialFragment;
import com.sgb.kjwl.view.ui.fragment.self.pick.UserOfferFragment;
import com.sgb.kjwl.view.ui.fragment.shop.ShopMyPriceFragment;
import com.sgb.kjwl.viewmodel.business.MemberDetailFragModel;
import com.sgb.kjwl.viewmodel.business.MemberInfoFragModel;
import com.sgb.kjwl.viewmodel.manage.AgentCheckModel;
import com.sgb.kjwl.viewmodel.manage.AgentTotalOrderModel;
import com.sgb.kjwl.viewmodel.manage.CompanySpecialViewModel;
import com.sgb.kjwl.viewmodel.manage.OtherInquiryModel;
import com.sgb.kjwl.viewmodel.manage.WebSiteInquiryModel;
import com.sgb.kjwl.viewmodel.self.ApprovalModel;
import com.sgb.kjwl.viewmodel.self.RegisterModel3;
import com.sgb.kjwl.viewmodel.self.RegisterModelE;
import com.sgb.kjwl.viewmodel.self.SelfFragModel5;
import com.sgb.kjwl.viewmodel.self.carMakers.MyOfferFragModel;
import com.sgb.kjwl.viewmodel.self.collect.SelfPickListFragModel3;
import com.sgb.kjwl.viewmodel.self.collect.SelfPickListFragModel4;
import com.sgb.kjwl.viewmodel.self.company.AgreementViewModel;
import com.sgb.kjwl.viewmodel.self.company.CentralizedMiningViewModel;
import com.sgb.kjwl.viewmodel.self.company.EnquiryViewModel;
import com.sgb.kjwl.viewmodel.self.company.ManagementDynamicViewModel;
import com.sgb.kjwl.viewmodel.self.mine.AttentionViewModel;
import com.sgb.kjwl.viewmodel.self.mine.CommonFocusFragmentModel;
import com.sgb.kjwl.viewmodel.self.mine.IntelligentFocusFragmentModel;
import com.sgb.kjwl.viewmodel.self.packers.FragAlbumModel;
import com.sgb.kjwl.viewmodel.self.packers.FragIntroduceModel;
import com.sgb.kjwl.viewmodel.self.packers.FragPackersManageModel;
import com.sgb.kjwl.viewmodel.self.pick.ProjectDetailedListFragModel;
import com.sgb.kjwl.viewmodel.self.pick.UserLaborFragModel;
import com.sgb.kjwl.viewmodel.self.pick.UserMachineFragModel;
import com.sgb.kjwl.viewmodel.self.pick.UserMaterialFragModel;
import com.sgb.kjwl.viewmodel.self.pick.UserOfferFragModel;
import com.sgb.kjwl.viewmodel.self.publish.CarStateModel3;
import com.sgb.kjwl.viewmodel.self.publish.DeviceStateModel;
import com.sgb.kjwl.viewmodel.self.publish.FactoryStateModel;
import com.sgb.kjwl.viewmodel.self.publish.FarmStateModel;
import com.sgb.kjwl.viewmodel.self.publish.GoodsListModel;
import com.sgb.kjwl.viewmodel.self.publish.GoodsStateModel3;
import com.sgb.kjwl.viewmodel.self.publish.HouseStateModel;
import com.sgb.kjwl.viewmodel.self.publish.LandStateModel;
import com.sgb.kjwl.viewmodel.self.publish.LeaseDemandStateModel;
import com.sgb.kjwl.viewmodel.self.publish.LeaseOrderStateModel;
import com.sgb.kjwl.viewmodel.self.publish.MachineStateModel;
import com.sgb.kjwl.viewmodel.self.publish.PackersStateModel;
import com.sgb.kjwl.viewmodel.shopping.ShopMyPriceModel;
import com.swgk.core.base.api.BaseApiSource;
import com.swgk.core.base.di.Fragment;
import com.swgk.core.base.model.preference.BasePreferenceSource;

import dagger.Module;
import dagger.Provides;

@Module
public class SelfFragModule {
    private SelfFragment5 selfFragment5;
    private PackersStateFragment packersStateFragment;
    private DeviceStateFragment deviceStateFragment;
    private MachineStateFragment machineStateFragment;
    private GoodsStateFragment goodsStateFragment;
    private ProjectDetailedListFragment projectDetailedListFragment;
    private UserMaterialFragment userMaterialFragment;
    private UserMachineFragment userMachineFragment;
    private UserLaborFragment userLaborFragment;
    private UserOfferFragment userOfferFragment;
    private MemberInfoFragment memberInfoFragment;
    private MemberDetailFragment memberDetailFragment;
    private GoodsStateFragment3 goodsStateFragment3;
    private CarStateFragment3 carStateFragment3;
    private SelfPickListFragment3 selfPickListFragment3;
    private SelfPickListFragment4 selfPickListFragment4;
    private PersonalRegistrationFragment personalRegistrationFragment;
    private EnterpriseRegistrationFragment enterpriseRegistrationFragment;
    private ShopMyPriceFragment shopmypricefragment;
    private HouseStateFragment houseStateFragment;
    private FactoryStateFragment factoryStateFragment;
    private LandStateFragment landStateFragment;
    private LeaseOrderStateFragment leaseOrderStateFragment;
    private FarmStateFragment farmStateFragment;
    private FragPackersManageFragment fragPackersManageFragment;
    private FragIntroduceFragment fragIntroduceFragment;
    private FragAlbumFragment fragAlbumFragment;
    private MyOfferFragment myOfferFragment;
    private LeaseDemandStateFragment leaseDemandStateFragment;
    private AgentGoodsOrderStateFragment agentGoodsOrderStateFragment;

    //询函
    private WebSiteInquiryFragment webSiteInquiryFragment;

    public SelfFragModule() {

    }

    public SelfFragModule(MyOfferFragment myOfferFragment) {
        this.myOfferFragment = myOfferFragment;
    }

    private ApprovalManagerFragment approvalManagerFragment;
    private IntelligentFocusListFragment intelligentAttentionListFragment;
    private CommonFocusFragment commonFocusFragment;

    public SelfFragModule(ApprovalManagerFragment approvalManagerFragment) {
        this.approvalManagerFragment = approvalManagerFragment;
    }

    public SelfFragModule(FragAlbumFragment fragAlbumFragment) {
        this.fragAlbumFragment = fragAlbumFragment;
    }

    public SelfFragModule(FragIntroduceFragment fragIntroduceFragment) {
        this.fragIntroduceFragment = fragIntroduceFragment;
    }

    public SelfFragModule(FragPackersManageFragment fragPackersManageFragment) {
        this.fragPackersManageFragment = fragPackersManageFragment;
    }

    public SelfFragModule(EnterpriseRegistrationFragment enterpriseRegistrationFragment) {
        this.enterpriseRegistrationFragment = enterpriseRegistrationFragment;
    }

    public SelfFragModule(IntelligentFocusListFragment intelligentAttentionListFragment) {
        this.intelligentAttentionListFragment = intelligentAttentionListFragment;
    }

    public SelfFragModule(CommonFocusFragment commonFocusFragment) {
        this.commonFocusFragment = commonFocusFragment;
    }

    public SelfFragModule(SelfFragment5 selfFragment5) {
        this.selfFragment5 = selfFragment5;
    }

    public SelfFragModule(PackersStateFragment packersStateFragment) {
        this.packersStateFragment = packersStateFragment;
    }

    public SelfFragModule(DeviceStateFragment deviceStateFragment) {
        this.deviceStateFragment = deviceStateFragment;
    }

    public SelfFragModule(MachineStateFragment machineStateFragment) {
        this.machineStateFragment = machineStateFragment;
    }

    public SelfFragModule(GoodsStateFragment goodsStateFragment) {
        this.goodsStateFragment = goodsStateFragment;
    }

    public SelfFragModule(CarStateFragment3 carStateFragment3) {
        this.carStateFragment3 = carStateFragment3;
    }

    public SelfFragModule(ProjectDetailedListFragment projectDetailedListFragment) {
        this.projectDetailedListFragment = projectDetailedListFragment;
    }

    public SelfFragModule(UserMaterialFragment userMaterialFragment) {
        this.userMaterialFragment = userMaterialFragment;
    }

    public SelfFragModule(UserMachineFragment userMachineFragment) {
        this.userMachineFragment = userMachineFragment;
    }

    public SelfFragModule(UserLaborFragment userLaborFragment) {
        this.userLaborFragment = userLaborFragment;
    }

    public SelfFragModule(UserOfferFragment userOfferFragment) {
        this.userOfferFragment = userOfferFragment;
    }

    public SelfFragModule(MemberInfoFragment memberInfoFragment) {
        this.memberInfoFragment = memberInfoFragment;
    }

    public SelfFragModule(MemberDetailFragment memberDetailFragment) {
        this.memberDetailFragment = memberDetailFragment;
    }

    public SelfFragModule(GoodsStateFragment3 goodsStateFragment3) {
        this.goodsStateFragment3 = goodsStateFragment3;
    }

    public SelfFragModule(SelfPickListFragment3 selfPickListFragment3) {
        this.selfPickListFragment3 = selfPickListFragment3;
    }

    public SelfFragModule(SelfPickListFragment4 selfPickListFragment4) {
        this.selfPickListFragment4 = selfPickListFragment4;
    }

    public SelfFragModule(PersonalRegistrationFragment personalRegistrationFragment) {
        this.personalRegistrationFragment = personalRegistrationFragment;
    }

    public SelfFragModule(ShopMyPriceFragment shopmypricefragment) {
        this.shopmypricefragment = shopmypricefragment;
    }

    public SelfFragModule(HouseStateFragment houseStateFragment) {
        this.houseStateFragment = houseStateFragment;
    }

    public SelfFragModule(FactoryStateFragment factoryStateFragment) {
        this.factoryStateFragment = factoryStateFragment;
    }

    public SelfFragModule(LandStateFragment landStateFragment) {
        this.landStateFragment = landStateFragment;
    }

    public SelfFragModule(LeaseOrderStateFragment leaseOrderStateFragment) {
        this.leaseOrderStateFragment = leaseOrderStateFragment;
    }

    public SelfFragModule(FarmStateFragment farmStateFragment) {
        this.farmStateFragment = farmStateFragment;
    }

    public SelfFragModule(LeaseDemandStateFragment leaseDemandStateFragment) {
        this.leaseDemandStateFragment = leaseDemandStateFragment;
    }

    public SelfFragModule(WebSiteInquiryFragment webSiteInquiryFragment) {
        this.webSiteInquiryFragment = webSiteInquiryFragment;
    }

    @Provides
    @Fragment
    SelfRepertory provideSelfRepertory(BaseApiSource apiSource, BasePreferenceSource preferenceSource) {
        return new SelfRepertoryImpl(apiSource, preferenceSource);
    }

    @Provides
    @Fragment
    SelfFragModel5 provideSelfFragModel5(SelfRepertory repertory) {
        return new SelfFragModel5(selfFragment5, repertory);
    }

    @Provides
    @Fragment
    PackersStateModel providePackersStateModel(SelfRepertory repertory) {
        return new PackersStateModel(packersStateFragment, repertory);
    }

    @Provides
    @Fragment
    DeviceStateModel provideDeviceStateModel(SelfRepertory repertory) {
        return new DeviceStateModel(deviceStateFragment, repertory);
    }

    @Provides
    @Fragment
    MachineStateModel provideMachineStateModel(SelfRepertory repertory) {
        return new MachineStateModel(machineStateFragment, repertory);
    }

    @Provides
    @Fragment
    GoodsListModel provideGoodsListModel(SelfRepertory repertory) {
        return new GoodsListModel(goodsStateFragment, repertory);
    }

    @Provides
    @Fragment
    GoodsStateModel3 provideGoodsStateModel3(SelfRepertory repertory) {
        return new GoodsStateModel3(goodsStateFragment3, repertory);
    }

    @Provides
    @Fragment
    CarStateModel3 provideCarStateModel3(SelfRepertory repertory) {
        return new CarStateModel3(carStateFragment3, repertory);
    }

    @Provides
    @Fragment
    ProjectDetailedListFragModel provideProjectDetailedListFragModel(SelfRepertory repertory) {
        return new ProjectDetailedListFragModel(projectDetailedListFragment, repertory);
    }

    @Provides
    @Fragment
    UserMaterialFragModel provideUserMaterialFragModel(SelfRepertory repertory) {
        return new UserMaterialFragModel(userMaterialFragment, repertory);
    }

    @Provides
    @Fragment
    UserMachineFragModel provideUserMachineFragModel(SelfRepertory repertory) {
        return new UserMachineFragModel(userMachineFragment, repertory);
    }

    @Provides
    @Fragment
    UserLaborFragModel provideUserLaborFragModel(SelfRepertory repertory) {
        return new UserLaborFragModel(userLaborFragment, repertory);
    }

    @Provides
    @Fragment
    UserOfferFragModel provideUserOfferFragModel(SelfRepertory repertory) {
        return new UserOfferFragModel(userOfferFragment, repertory);
    }

    @Provides
    @Fragment
    MemberInfoFragModel provideMemberInfoFragModel(SelfRepertory repertory) {
        return new MemberInfoFragModel(memberInfoFragment, repertory);
    }

    @Provides
    @Fragment
    MemberDetailFragModel provideMemberDetailFragModel(SelfRepertory repertory) {
        return new MemberDetailFragModel(memberDetailFragment, repertory);
    }

    @Provides
    @Fragment
    SelfPickListFragModel3 provideSelfPickListFragModel3(SelfRepertory repertory) {
        return new SelfPickListFragModel3(selfPickListFragment3, repertory);
    }

    @Provides
    @Fragment
    SelfPickListFragModel4 provideSelfPickListFragModel4(SelfRepertory repertory) {
        return new SelfPickListFragModel4(selfPickListFragment4, repertory);
    }


    @Provides
    @Fragment
    RegisterModel3 provideRegisterModel3P(SelfRepertory repertory) {
        return new RegisterModel3(personalRegistrationFragment, repertory);
    }

    @Provides
    @Fragment
    RegisterModelE provideRegisterModelE(SelfRepertory repertory) {
        return new RegisterModelE(enterpriseRegistrationFragment, repertory);
    }

    @Provides
    @Fragment
    ShopMyPriceModel providePriceShopModel(SelfRepertory repertory) {
        return new ShopMyPriceModel(shopmypricefragment, repertory);
    }

    @Provides
    @Fragment
    HouseStateModel provideHouseStateModel(SelfRepertory repertory) {
        return new HouseStateModel(houseStateFragment, repertory);
    }

    @Provides
    @Fragment
    FactoryStateModel provideFactoryStateModel(SelfRepertory repertory) {
        return new FactoryStateModel(factoryStateFragment, repertory);
    }

    @Provides
    @Fragment
    LandStateModel provideLandStateModel(SelfRepertory repertory) {
        return new LandStateModel(landStateFragment, repertory);
    }

    @Provides
    @Fragment
    LeaseOrderStateModel provideLeaseOrderStateModel() {
        return new LeaseOrderStateModel(leaseOrderStateFragment);
    }

    @Provides
    @Fragment
    FarmStateModel provideFarmStateModel(SelfRepertory repertory) {
        return new FarmStateModel(farmStateFragment, repertory);
    }

    @Provides
    @Fragment
    FragPackersManageModel provideFragPackersManageModel(SelfRepertory repertory) {
        return new FragPackersManageModel(fragPackersManageFragment, repertory);
    }

    @Provides
    @Fragment
    FragIntroduceModel provideFragIntroduceModel(SelfRepertory repertory) {
        return new FragIntroduceModel(fragIntroduceFragment, repertory);
    }

    @Provides
    @Fragment
    FragAlbumModel provideFragAlbumModel(SelfRepertory repertory) {
        return new FragAlbumModel(fragAlbumFragment, repertory);
    }

    @Provides
    @Fragment
    MyOfferFragModel provideMyOfferFragModel(SelfRepertory repertory) {
        return new ViewModelProvider(myOfferFragment).get(MyOfferFragModel.class);
    }

    @Provides
    @Fragment
    ApprovalModel provideApprovalModel() {
        return new ViewModelProvider(approvalManagerFragment).get(ApprovalModel.class);
    }

    @Provides
    @Fragment
    IntelligentFocusFragmentModel intelligentAttentionFragmentModel(SelfRepertory repertory) {
        return new IntelligentFocusFragmentModel(intelligentAttentionListFragment, repertory);
    }

    @Provides
    @Fragment
    CommonFocusFragmentModel commonFocusFragmentModel(SelfRepertory repertory) {
        return new CommonFocusFragmentModel(commonFocusFragment, repertory);
    }

    @Provides
    @Fragment
    WebSiteInquiryModel webSiteInquiryModel() {
        return new WebSiteInquiryModel();
    }

    @Provides
    @Fragment
    OtherInquiryModel otherInquiryModel() {
        return new OtherInquiryModel();
    }


    @Provides
    @Fragment
    AgentCheckModel agentCheckModel() {
        return new AgentCheckModel();
    }

    @Provides
    @Fragment
    AgentTotalOrderModel agentTotalOrderModel() {
        return new AgentTotalOrderModel();
    }

    @Provides
    @Fragment
    LeaseDemandStateModel provideLeaseDemandStateModel() {
        return new LeaseDemandStateModel(leaseDemandStateFragment);
    }

    @Provides
    @Fragment
    AttentionViewModel attentionViewModel() {
        return new AttentionViewModel();
    }

    @Provides
    @Fragment
    ManagementDynamicViewModel managementDynamicViewModel() {
        return new ManagementDynamicViewModel();
    }

    @Provides
    @Fragment
    AgreementViewModel agreementViewModel() {
        return new AgreementViewModel();
    }

    @Provides
    @Fragment
    EnquiryViewModel enquiryViewModel() {
        return new EnquiryViewModel();
    }

    @Provides
    @Fragment
    CentralizedMiningViewModel centralizedMiningViewModel() {
        return new CentralizedMiningViewModel();
    }

    @Provides
    @Fragment
    CompanySpecialViewModel companySpecialViewModel() {
        return new CompanySpecialViewModel();
    }
}

